assume cs:code

data segment
    db 'Welcome to masm!', 0
data ends

code segment

start:

    mov dh, 8
    mov dl, 3
    mov cl, 2

    mov ax, data
    mov ds, ax
    mov si, 0

    call show_str

    mov ax, 4c00h
    int 21h

show_str:

    push bx
    push cx
    push es
    push si
    push di

    mov bl, cl

    mov ax, 0b800h
    mov es, ax

    push dx
    mov ax, 160
    mov dl, dh
    mov dh, 0
    mul dx
    mov di, ax
    pop dx

    mov al, 2
    mul dl
    add di, ax

show_char:

    mov cx, 0
    mov cl, ds:[si]
    jcxz done
    mov al, cl
    mov ah, bl
    
    mov es:[di], ax
    inc si
    add di, 2
    jmp short show_char

done:
    pop di
    pop si
    pop es
    pop cx
    pop bx
    ret

code ends
end start